#ifndef _H5MULTIBLOCK_ERRORS_H_
#define _H5MULTIBLOCK_ERRORS_H_

extern h5part_error_handler _err_handler;

#define CHECK_DECOMP(f)              \
    if (!f->multiblock->have_decomp) \
    return (*_err_handler)(          \
        _H5Part_get_funcname(),      \
        H5PART_ERR_DECOMP,           \
        "No dimensions defined.")

#define HANDLE_H5PART_BLOCK_DECOMP_ERR \
    (*_err_handler)(                   \
        _H5Part_get_funcname(),        \
        H5PART_ERR_DECOMP,             \
        "Number of blocks does not equal number of procs");

#define HANDLE_MPI_TYPE_ERR     \
    (*_err_handler)(            \
        _H5Part_get_funcname(), \
        H5PART_ERR_MPI,         \
        "Cannot create/commit/free strided vector MPI datatype.");

#define HANDLE_MPI_INT64_ERR                                          \
    (*_err_handler)(                                                  \
        _H5Part_get_funcname(),                                       \
        H5PART_ERR_MPI,                                               \
        "Integer overslow error! An offset/count/stride/etc. value "  \
        "passed to an MPI function exceeds the 32-bit limit imposed " \
        "by the MPI standard.");

#endif
